package com.hruiworks.campusgroup.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hruiworks.campusgroup.pojo.entity.User;
import com.hruiworks.campusgroup.pojo.request.UserUpdateRequest;
import com.hruiworks.campusgroup.pojo.vo.UserInfoVo;
import com.hruiworks.usercheck.pojo.entity.JwtEntity;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;

/**
 * @author jiushui
 * @description 针对表【user(用户信息表)】的数据库操作Service
 * @createDate 2025-02-09 09:45:00
 */
public interface UserService extends IService<User> {


    /**
     * 用户注册
     *
     * @param username      用户名
     * @param password      密码
     * @param checkPassword 再次输入密码的密码
     * @param university    所属学校
     * @return 返回主键id
     */
    Long userRegister(String username, String password, String checkPassword, String university);

    /**
     * 用户登录
     *
     * @param username 用户名
     * @param password 密码
     * @return 返回生成的jwt及对应的签名key
     */
    JwtEntity userLogin(String username, String password);

    /**
     * 当前用户信息
     *
     * @param userId 当前用户Id
     * @return 脱敏用户信息
     */
    UserInfoVo currentUserInfo(Long userId);


    /**
     * 更新用户信息
     *
     * @param userUpdateRequest 允许可以更新的内容
     * @param userId            当前登录的用户
     * @return 更新情况
     */
    Integer updateUser(UserUpdateRequest userUpdateRequest, Long userId);


    /**
     * 根据用户id删除用户
     *
     * @param id 用户id
     * @return 删除情况
     */
    boolean deleteUserById(Long id);

    /**
     * 更新用户头像
     * @param avatar 传入的头像
     * @return 成功返回true
     */
    boolean updateUserAvatar(MultipartFile avatar, Long userId);

    // --不允许出现普通户的controller-------------------------------------------------------------------------------

}
